﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpBasic.DelegateTest
{

    public class DelegateTest2
    {
        /// <summary>
        /// 定义一个委托
        /// </summary>
        /// <param name="paramA">参数paramA</param>
        /// <returns></returns>
        private delegate string GetId(string paramA);

        /// <summary>
        /// 得到用户ID
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public static string GetUserId(string userId)
        {
            return "当前用户Id" + userId;
        }

        public static string GetClassId(string userId)
        {
            return "当前班级的Id是:" + userId;
        }

        /// <summary>
        /// new 一个委托需要指向一个方法
        /// str1.tostring 是一个String的一个方法名，
        /// 
        /// </summary>
        public static void DoTest1()
        {
            //将一个符合委托要求的方法 GetUserId赋值给getString
            GetId getId = GetUserId;

            //使用函数方法
            string curId1 = getId("学号1011");
            Console.WriteLine(curId1);

            //将第二个符合委托要求的方法 GetClassId赋值给getString
            getId = GetClassId;
            string curId2 = getId("班级981");
            Console.WriteLine(curId2);
        }
    }
}
